import {
    request
} from "@/api/request.js"

//banjiajia 的接口还有问题，先用这个对接
const BASE_URL = 'https://ai-api.ytaiccg.com/api/param';
// const BASE_URL = 'https://ai-api.banjiajia.com/api/param';

//获取模型分类子列表
/**
 * @constructor
 * @param {string} id - 根节点id（不传入id参数查最顶层列表)
 * @param {string}  Authorization - 用户标识
 */
const apiGetModelCategory = (data = {}) => {
    return request({
        url: BASE_URL + "/modelcategory/children",
        data
    })
}

//获取我的模型列表
/**
 * @constructor
 * @param {pageParams} pageParams - pageNo-页码 | pageSize-每页记录数
 * @param {string}  Authorization - 用户标识
 */
const apiGetMyModel = (data = {}) => {
    return request({
        url: BASE_URL + "/creation/my",
        data,
        method: "POST"
    })
}

//指定类型模型列表
/**
 * @constructor
 * @param {categoryId} id - 类型id
 * @param {pageParams} pageParams - pageNo-页码 | pageSize-每页记录数
 * @param {string}  Authorization - 用户标识
 */
const apiGetModelList = (data = {}, id = '') => {
    let url = id ? "/model/category?categoryId=" + id : "/model/category?category"
    return request({
        url: BASE_URL + url,
        data,
        method: "POST"
    })
}

//收藏模型
/**
 * @constructor
 * @param {dirid} id - 文件夹id
 * @param {Object} interactiveDto - 创作互动对象 {type:交互类别(点赞：like, 收藏：collect),action:交互行为(确定：on, 取消：off),示例值(off),作品id,示例值(1696153572124913666)}
 */
const apiCollectModel = (data = {}) => {
    let url = data.dirid ? "/model/interactive?dirid=" + data.dirid : "/model/interactive"
    return request({
        url: BASE_URL + url,
        data,
        method: "POST"
    })
}

//获取最近使用的模型列表
/**
 * @constructor
 * @param {pageParams} pageParams - pageNo-页码 | pageSize-每页记录数
 * @param {string}  Authorization - 用户标识
 */
const apiGetRecentModelList = (data = {}) => {
    return request({
        url: BASE_URL + '/model/recent',
        data,
        method: "POST"
    })
}

//获取收藏的模型列表
/**
 * @constructor
 * @param {pageParams} pageParams - pageNo-页码 | pageSize-每页记录数
 * @param {string}  Authorization - 用户标识
 */
const apiGetCollectModelList = (data = {}) => {
    return request({
        url: BASE_URL + '/model/collect',
        data,
        method: "POST"
    })
}
//获取定制的模型列表
/**
 * @constructor
 * @param {pageParams} pageParams - pageNo-页码 | pageSize-每页记录数
 * @param {string}  Authorization - 用户标识
 */
const apiGetExclusiveModelList = (data = {}) => {
    return request({
        url: BASE_URL + '/model/exclusive',
        data,
        method: "POST"
    })
}

//获取限定专区的模型列表
/**
 * @constructor
 * @param {pageParams} pageParams - pageNo-页码 | pageSize-每页记录数
 * @param {string}  Authorization - 用户标识
 */
const apiGetSpecialModelList = (data = {},id) => {
    return request({
        url: BASE_URL + '/model/special?categoryId='+id,
        data,
        method: "POST"
    })
}

//批量删除作品
/**
 * @constructor
 * @param {ids} ids - ids
 */
const apiDeleteModels = (data = []) => {
    return request({
        url: BASE_URL + "/creation/batchdel",
        data,
        method: "POST",
        needStringify: true, // 是否需要JSON序列化
    })
}

//云图高清放大-变化幅度
/**
 * @constructor
 * @param {ids} ids - ids
 */
const apiDenoise = (data = {}) => {
    return request({
        url: BASE_URL + "/scale/denoise",
        data,
    })
}

//云图高清放大提交任务 
/**
 * @constructor
 * @param {string} reqid - 任务id
 * @param {number} img_index - 图片索引
 * @param {number} denoising_strength - 重绘幅度
 */
const apiUpscale = (data = {}) => {
    return request({
        url: BASE_URL + (data.mode ? "/extraupscalefrom" : "/upscalefrom"),
        data,
        method: "POST",
    })
}

//获取任务状态
const apiGetReqsStatus = (data = {}) => {
    return request({
        url: BASE_URL + '/reqs_status',
        data,
        method: "POST",
        isErrMsg: false
    })
}

// 图生图
const apiGetImg2Img = (data = {}) => {
    return request({
        url: BASE_URL + '/img2img',
        data,
        method: "POST",
        header: {
            'content-type': 'multipart/form-data'
        }
    })
}

// 图片控制模式
const apiGetAssemble = (data = {}) => {
    return request({
        url: BASE_URL + '/default/assemble',
        data,
    })
}

// 获取图片控制模式下的高阶设置默认值
const apiGetControlnet = (id = '') => {
    return request({
        url: BASE_URL + '/controlnet_client/' + id,
    })
}

//获取模型描述词
const apiGetPrompt = (id = '') => {
    return request({
        url: BASE_URL + '/prompt/test?style=' + id,
    })
}

//获取模型权重参数
const apiGetWeight = (id = '') => {
    return request({
        url: BASE_URL + '/default/styles/weight/' + id,
    })
}

// 涂抹替换
const apiDrawInpaint = (data = {}) => {
    return request({
        url: BASE_URL + '/inpaint/draw_inpaint',
        data,
        method: "POST",
        header: {
            'content-type': 'multipart/form-data'
        }
    })
}

// 涂抹替换返回结果
const apiDrawInpaintCreation = (id = '') => {
    return request({
        url: BASE_URL + '/creation/inpaint_tree/' + id
    })
}






export {
    BASE_URL,
    apiGetModelCategory,    			//获取模型的分类
    apiGetMyModel,						//获取我的模型
    apiGetModelList,					//获取指定类别的模型列表
    apiCollectModel,                    //收藏模型
    apiGetRecentModelList,				//获取最近使用的模型
    apiGetCollectModelList,				//获取收藏的模型列表
    apiGetExclusiveModelList,			//获取定制的模型列表
    apiGetSpecialModelList,				//获取限定专区的模型列表
    apiDeleteModels,        			//批量删除作品
    apiDenoise,             			//云图高清放大-变化幅度
    apiUpscale,             			//云图高清放大提交任务
    apiGetReqsStatus,       			//获取任务状态  
    apiGetImg2Img,          			//图生图
    apiGetAssemble,						//图片控制模式
    apiGetControlnet,       			//获取图片控制模式下的高阶设置默认值
    apiGetPrompt,           			//获取模型描述词
    apiGetWeight,           			//获取模型权重参数
    apiDrawInpaint,                     //涂抹替换
    apiDrawInpaintCreation,             //涂抹替换返回结果
}